// 引入express，并获得express的实例
const express = require('express');
const path = require("path")
const app = express()
// 引入http模块
const http = require('http');
// 用http模块创建一个服务并把express的实例挂载上去
const server = http.Server(app);
// 引入socket.io并立即实例化，把server挂载上去
const io = require('socket.io')(server, {
    //解决跨域，因为socket不是websocket
    cors: {
        origin:'*'
    }
});

//记录所有已经登录的用户
const userList = []
server.listen(8000, () => {
    console.log('启动服务器：8000端口')
})

//处理静态资源
app.use('/chatroom',express.static(path.join(__dirname,'/chatroom')))
// app.get('/', function (req,res) {
//     res.sendFile(__dirname + '/index.html')
// })

io.on('connection', function (socket) {
    // console.log('new connect')
    socket.emit('neww', {hello:'hello'})
    socket.on('login',function (data) {
        //如果用户登陆过，就不用登陆了
       let user =  userList.find(item => item.username === data.username)
       if(user) {
           //exist,不能重名，告诉浏览器登陆失败
           socket.emit('error', { msg: '登陆失败' })
           console.log('登陆失败 connect')
       }else {
          userList.push(data)
          socket.emit('success', data)
          console.log('登陆chenggong connect')
          //告诉所有人有人进来：广播
          io.emit('userAdd', data )
          //告诉所有人 用户列表
          io.emit('userList',userList)
          //存当前用户
          socket.username = data.username
          socket.img = data.img
       }
    })
    //用户断开连接
    socket.on('disconnect', () => {
        //把当前用户的信息从当前列表删除
       let index  = userList.findIndex(item => {
            return item.username === socket.username
        })
        userList.splice(index,1)
        //告诉所有人有人离开了
        io.emit('userLeave',  {
            username: socket.username,
            img: socket.img
        })
        //更新用户列表
        io.emit('userList', userList)
    })
    //监听聊天消息
    socket.on('sendMessage', data => {
        console.log(data)
        //广播给所有用户
        io.emit('message', data)
    })
    //接收文件
    socket.on('sendImage', data => {
        //广播给所有用户
        io.emit('image',data)

    })

})
console.log(userList)